/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package domain.controllers;

import domain.Entity.EntityProyecto;
import domain.Entity.EntityTarea;
import domain.Entity.EntityUsuario;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import managers.ProyectoManager;
import managers.TareaManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.view.RedirectView;

/**
 *
 * @author jorge
 */
public class obtenerProyectoController implements Controller{
    
    private ProyectoManager pm = ProyectoManager.getInstance();
    private TareaManager tm = TareaManager.getInstance();
    
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        
        ModelAndView mav = new ModelAndView();
        HttpSession session = request.getSession();
        
        EntityUsuario eu = (EntityUsuario) session.getAttribute("usuario");
        EntityProyecto ep = pm.get(request.getParameter("nombreProyecto"));
        String tipo = request.getParameter("tipo");
        
        if(tipo.equals("modificar")){
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            String fechaInicial = sdf.format(ep.getFecha_ini());
            String fechaFinal = sdf.format(ep.getFecha_fin());
            session.setAttribute("proyecto", ep);
            session.setAttribute("fecIni", fechaInicial);
            session.setAttribute("fecFin", fechaFinal);
            mav.setView(new RedirectView("modificarProyecto.htm"));
        }else if(tipo.equals("ver")){
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            String fechaInicial = sdf.format(ep.getFecha_ini());
            String fechaFinal = sdf.format(ep.getFecha_fin());
            session.setAttribute("proyecto", ep);
            session.setAttribute("fecIni", fechaInicial);
            session.setAttribute("fecFin", fechaFinal);
            mav.setView(new RedirectView("verProyecto.htm"));
        }else if(tipo.equals("tarea")){
            List l = new ArrayList();
            List proyectos = pm.mostrarProyectosGestor(eu.getDni());
            Iterator itp = proyectos.iterator();
            while(itp.hasNext()){
                EntityProyecto proyecto = (EntityProyecto) itp.next();
                List tareas = tm.mostrarTareasProyecto(proyecto.getIdProyecto());
                Iterator itt = tareas.iterator();
                while(itt.hasNext()){
                    EntityTarea tarea = (EntityTarea) itt.next();
                    StringTokenizer st = new StringTokenizer(tarea.getEtiquetas());
                    while(st.hasMoreTokens()){
                        String s = st.nextToken();
                            if(!l.contains(s)){ 
                                l.add(s);
                            } 
                    }
                }
            }    
            Collections.sort(l);
            session.setAttribute("etiquetas", l);
            session.setAttribute("proyecto", ep);
            mav.setView(new RedirectView("crearTarea.htm"));
        }else if(tipo.equals("borrar")){
            pm.borrarProyecto(ep.getIdProyecto());
            mav.setView(new RedirectView("mostrarProyectos.htm"));
        }
        
        return mav;
        
        
    }
}